/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.uca.dss.curso1011.grupo9;

import java.util.List;

/**
 * Clase que carga los trenes y trayectos y construye los gestores de
 * reservas y viajes
 * @author eldruin
 */
public class Gestion{
    private GestorViajes gestor_viajes;
    private GestorReservas gestor_reservas;
    private Carga carga;
    private static Gestion instancia_unica;

    /**
     * Constructor
     */
    private Gestion() { };

    public static Gestion getInstance()
    {
	if (instancia_unica == null)
	    instancia_unica = new Gestion();

	return instancia_unica;
    }

    /**
     * Cargar. LLama a cargar y genera los viajes
     * @param archivo_CSV_trenes
     * @param archivo_CSV_trayectos
     * @throws Excepciones
     */
    public void cargar(String archivo_CSV_trenes,
		       String archivo_CSV_trayectos) throws Excepciones
    {
        // Si todavía no hemos cargado, cargamos
        if (carga == null)
        {
            carga = new Carga();
            carga.cargar(archivo_CSV_trenes, archivo_CSV_trayectos);
            List<Trayecto> trayectos;
            trayectos = carga.getTrayectos();

            gestor_viajes = new GestorViajes();

            gestor_viajes.generarViajes(trayectos);
        }
        gestor_reservas = new GestorReservas();
    }
    public static void init() throws Exception {
    }

    /**
     * @return gestor viajes
     */
    public GestorViajes getGestorViajes()
    {
        return gestor_viajes;
    }

    /**
     * @return gestor reservas
     */
    public GestorReservas getGestorReservas()
    {
        return gestor_reservas;
    }
}
